今天來到迴圈的最後了,還不知道for 迴圈、while 迴圈和do-while 迴圈可以前往兩天文章唷!
定義:
迴圈敘述中又有其他迴圈敘述
我們來用巢狀迴圈完成99乘法表吧!
public class NestedLoopDemo {
public static void main(String[] args) {
//外迴圈
for (int i = 1 ; i<=9 ; i++) {
//內迴圈
for (int j=1 ; j<=9 ; j++) {
System.out.print(i+"*"+j+"="+(i*j)+"\t");
}
System.out.println(" ");
}
}
}
/* 輸出結果
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
可以強迫跳離迴圈
for(初始化語句; 迴圈條件; 迭代語句)
{
敘述1;
敘述2;
...
break; //僅執行到此行
...
敘述3; //此敘述不會被執行
}
範例:
public class BreakDemo {
public static void main(String[] args) {
int i;
for (i = 1; i <= 10; i++){
if( i % 3 == 0) {
break;
}
System.out.println("i = " + i); //此行執行結果並無印出
}
System.out.println("當迴圈中斷,i="+i);
}
}
/* 輸出結果
i = 1
i = 2
當迴圈中斷,i=3
*/
break語句不僅可以結束其所在的迴圈,也可以透過標籤結束在該標籤的迴圈
java的標籤只有放在迴圈語句之前才有作用
bpublic class BreakDemo2 {
public static void main(String[] args) {
outer:
for (int i = 1 ; i <= 5 ; i++) {
//內迴圈
for (int j = 0 ; j <= 3 ; j++) {
System.out.println("i 的值為:" + i + " j的值為:" + j);
if(j == 1) {
break;
}
}
}
}
}
/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
i 的值為:2 j的值為:0
i 的值為:2 j的值為:1
i 的值為:3 j的值為:0
i 的值為:3 j的值為:1
i 的值為:4 j的值為:0
i 的值為:4 j的值為:1
i 的值為:5 j的值為:0
i 的值為:5 j的值為:1
*/
public class BreakDemo2 {
public static void main(String[] args) {
//標籤
outer:
for (int i = 1 ; i <= 5 ; i++) {
//內迴圈
for (int j = 0 ; j <= 3 ; j++) {
System.out.println("i 的值為:" + i + " j的值為:" + j);
if(j == 1) {
break outer;
}
}
}
}
}
/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
*/
注意:通常緊跟break 之後的標籤,必須在標籤所在的迴圈之前定義才有意義!
可以強迫跳到迴圈開頭 ,忽略此次迴圈剩下的語句,不會終止迴圈
for(初始化語句; 迴圈條件; 迭代語句)
{
敘述1;
敘述2;
...
continue; //僅執行到此行
...
敘述3; //此敘述不會被執行
}
範例:
public class ContinueDemo {
public static void main(String[] args) {
int i;
for (i = 1; i <= 10; i++){
if( i % 3 == 0) {
continue;
}
System.out.println("i = " + i); //此行執行結果並無印出
}
System.out.println("當迴圈中斷,i="+i);
}
}
/* 輸出結果
i = 1
i = 2
i = 4
i = 5
i = 7
i = 8
i = 10
當迴圈中斷,i=11
*/
public class ContinueDemo2 {
public static void main(String[] args) {
//標籤
outer:
for (int i = 1 ; i <= 5 ; i++) {
//內迴圈
for (int j = 0 ; j <= 3 ; j++) {
System.out.println("i 的值為:" + i + " j的值為:" + j);
if(j == 1) {
continue outer;
}
}
}
}
}
/* 輸出結果
i 的值為:1 j的值為:0
i 的值為:1 j的值為:1
i 的值為:2 j的值為:0
i 的值為:2 j的值為:1
i 的值為:3 j的值為:0
i 的值為:3 j的值為:1
i 的值為:4 j的值為:0
i 的值為:4 j的值為:1
i 的值為:5 j的值為:0
i 的值為:5 j的值為:1
*/
public class ReturnDemo {
public static void main(String[] args) {
for(int i = 0; i < 3; i++) {
System.out.println("i 的值為:" + i );
if(i == 1) {
return;
}
System.out.println("return 之後");
}
}
}
/* 輸出結果
i 的值為:0
return 之後
i 的值為:1
*/
return 不是專門用於迴圈的關鍵字,一樣可以結束迴圈,但break和continue不同的是,return 直接結束整個方法
今天就結束迴圈囉!明天就會進入到陣列的部分!